import { Sequelize } from 'sequelize';
import dotenv from 'dotenv';
import seedAdminUser from '../database/seeders/adminSeeder.js';
import seedServiceStaff from '../database/seeders/serviceStaffSeeder.js';
import seedDefaultAvatars from '../database/seeders/defaultAvatarSeeder.js';

dotenv.config();

const sequelize = new Sequelize('wowza_app', 'root', 'root', {
  host: 'localhost',
  dialect: 'mysql',
  logging: console.log,  // 启用 SQL 查询日志
  pool: {
    max: 5,
    min: 0,
    acquire: 30000,
    idle: 10000
  }
});

// 测试数据库连接
async function testConnection() {
  try {
    await sequelize.authenticate();
    console.log('数据库连接成功。');
  } catch (error) {
    console.error('数据库连接失败:', error);
    process.exit(1);
  }
}

// 同步数据库
async function syncDatabase() {
  try {
    console.log('开始同步数据库...');
    
    // 禁用外键检查
    await sequelize.query('SET FOREIGN_KEY_CHECKS = 0');
    
    // 使用 force: true 重新创建表
    await sequelize.sync({ force: true });
    
    // 启用外键检查
    await sequelize.query('SET FOREIGN_KEY_CHECKS = 1');
    
    console.log('数据库同步成功！');

    // 创建默认管理员账号
    await seedAdminUser();
    
    // 创建默认客服
    await seedServiceStaff();

    // 创建默认头像
    await seedDefaultAvatars();
    
    console.log('所有种子数据创建完成！');
  } catch (error) {
    console.error('数据库同步失败:', error);
    // 确保重新启用外键检查
    try {
      await sequelize.query('SET FOREIGN_KEY_CHECKS = 1');
    } catch (e) {
      console.error('重新启用外键检查失败:', e);
    }
    throw error;
  }
}

// 初始化数据库
async function initDatabase() {
  await testConnection();
  await syncDatabase();
}

export { initDatabase };
export default sequelize;
